package com.fand.platform.userCenter.service;

import java.util.List;
import java.util.Map;

import com.fand.cache.support.CacheEvictSupport;
import com.fand.dto.PaginationDto;
import com.fand.platform.userCenter.dto.DepartmentDto;
import com.fand.platform.userCenter.dto.DepartmentLaDto;
import com.fand.platform.userCenter.dto.DepartmentReDto;

/**
 * 部门服务
 *
 * @author yaoHT
 */
public interface DepartmentService extends CacheEvictSupport {
	String BEAN_ID = "com.fand.platform.userCenter.service.DepartmentService";

	String CACHE_NAME = BEAN_ID + "Cache";
	/**
	 * 保存:部门
	 * 
	 * @param saveDepartment
	 *            部门对象
	 * 
	 * @return 部门对象
	 */
	DepartmentDto saveDepartmentByIdOrCodeForDepartment(DepartmentDto saveDepartment);

	/**
	 * 保存:部门
	 * 
	 * @param saveDepartment
	 *            部门对象
	 * 
	 * @return 部门对象
	 */
	DepartmentDto saveDepartmentBy2ForDepartment(DepartmentDto saveDepartment);

	/**
	 * 删除:部门
	 * 
	 * @param deleteDepartment
	 *            部门对象
	 * 
	 * @return 影响行数
	 */
	int deleteDepartmentBy1(DepartmentDto deleteDepartment);

	/**
	 * 删除:部门
	 * 
	 * @param deleteDepartment
	 *            部门对象
	 * 
	 * @return 影响行数
	 */
	int deleteDepartmentByIds(DepartmentDto deleteDepartment);

	/**
	 * 设置:部门
	 * 
	 * @param setDepartment
	 *            部门对象
	 * 
	 * @return 影响行数
	 */
	int setDepartmentBy1(DepartmentDto setDepartment);

	/**
	 * 设置:部门
	 * 
	 * @param setDepartment
	 *            部门对象
	 * 
	 * @return 影响行数
	 */
	int setDepartmentBy2(DepartmentDto setDepartment);

	/**
	 * 读取:部门
	 * 
	 * @param readDepartment
	 *            部门对象
	 * 
	 * @return 部门对象
	 */
	Integer readDepartmentByCodeNqIdForInteger(DepartmentDto readDepartment);

	/**
	 * 读取:部门
	 * 
	 * @param readDepartment
	 *            部门对象
	 * 
	 * @return 部门对象
	 */
	Integer readDepartmentBy2ForInteger(DepartmentDto readDepartment);

	/**
	 * 读取:部门
	 * 
	 * @param readListDepartment
	 *            部门对象
	 * 
	 * @return 部门对象集合
	 */
	List<Integer> readListDepartmentBy1(DepartmentDto readDepartment);

	/**
	 * 读取:部门
	 * 
	 * @param readListDepartment
	 *            部门对象
	 * 
	 * @return 部门对象集合
	 */
	List<Integer> readListDepartmentBy2(DepartmentDto readDepartment);

	/**
	 * 查询:部门
	 * 
	 * @param getDepartment
	 *            部门对象
	 * 
	 * @return 部门对象
	 */
	DepartmentDto getDepartmentBy1(DepartmentDto getDepartment);

	/**
	 * 查询:部门
	 * 
	 * @param getDepartment
	 *            部门对象
	 * 
	 * @return 部门对象
	 */
	DepartmentDto getDepartmentById(DepartmentDto getDepartment);

	/**
	 * 查询:部门
	 * 
	 * @param findDepartment
	 *            部门对象
	 * 
	 * @return 部门对象集合
	 */
	List<DepartmentDto> findDepartmentBy1(DepartmentDto findDepartment);

	/**
	 * 查询:部门
	 * 
	 * @param findDepartment
	 *            部门对象
	 * 
	 * @return 部门对象集合
	 */
	List<DepartmentDto> findDepartmentBy2(DepartmentDto findDepartment);
	
	/**
	 * 分页:部门
	 * 
	 * @param paginationDepartment
	 *            部门对象
	 * 
	 * @return 部门分页对象
	 */
	PaginationDto<DepartmentDto> paginationDepartmentBy1ForDepartmentList(DepartmentDto paginationDepartment);
			
	/**
	 * 分页
	 * 
	 * @param paginationDepartment
	 *            部门对象
	 * 
	 * @return 部门分页对象
	 */
	PaginationDto<Map<String, Object>> paginationDepartmentBy1ForMapList(DepartmentDto paginationDepartment);
	/**
	 * 保存:部门与语言
	 * 
	 * @param saveDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言对象
	 */
	DepartmentLaDto saveDepartmentLaByIdOrCodeForDepartmentLa(DepartmentLaDto saveDepartmentLa);

	/**
	 * 保存:部门与语言
	 * 
	 * @param saveDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言对象
	 */
	DepartmentLaDto saveDepartmentLaBy2ForDepartmentLa(DepartmentLaDto saveDepartmentLa);

	/**
	 * 删除:部门与语言
	 * 
	 * @param deleteDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 影响行数
	 */
	int deleteDepartmentLaBy1(DepartmentLaDto deleteDepartmentLa);

	/**
	 * 删除:部门与语言
	 * 
	 * @param deleteDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 影响行数
	 */
	int deleteDepartmentLaByIds(DepartmentLaDto deleteDepartmentLa);

	/**
	 * 设置:部门与语言
	 * 
	 * @param setDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 影响行数
	 */
	int setDepartmentLaBy1(DepartmentLaDto setDepartmentLa);

	/**
	 * 设置:部门与语言
	 * 
	 * @param setDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 影响行数
	 */
	int setDepartmentLaBy2(DepartmentLaDto setDepartmentLa);

	/**
	 * 读取:部门与语言
	 * 
	 * @param readDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言对象
	 */
	Integer readDepartmentLaByCodeNqIdForInteger(DepartmentLaDto readDepartmentLa);

	/**
	 * 读取:部门与语言
	 * 
	 * @param readDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言对象
	 */
	Integer readDepartmentLaBy2ForInteger(DepartmentLaDto readDepartmentLa);

	/**
	 * 读取:部门与语言
	 * 
	 * @param readListDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言对象集合
	 */
	List<Integer> readListDepartmentLaBy1(DepartmentLaDto readDepartmentLa);

	/**
	 * 读取:部门与语言
	 * 
	 * @param readListDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言对象集合
	 */
	List<Integer> readListDepartmentLaBy2(DepartmentLaDto readDepartmentLa);

	/**
	 * 查询:部门与语言
	 * 
	 * @param getDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言对象
	 */
	DepartmentLaDto getDepartmentLaBy1(DepartmentLaDto getDepartmentLa);

	/**
	 * 查询:部门与语言
	 * 
	 * @param getDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言对象
	 */
	DepartmentLaDto getDepartmentLaById(DepartmentLaDto getDepartmentLa);

	/**
	 * 查询:部门与语言
	 * 
	 * @param findDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言对象集合
	 */
	List<DepartmentLaDto> findDepartmentLaBy1(DepartmentLaDto findDepartmentLa);

	/**
	 * 查询:部门与语言
	 * 
	 * @param findDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言对象集合
	 */
	List<DepartmentLaDto> findDepartmentLaBy2(DepartmentLaDto findDepartmentLa);
	
	/**
	 * 分页:部门与语言
	 * 
	 * @param paginationDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言分页对象
	 */
	PaginationDto<DepartmentLaDto> paginationDepartmentLaBy1ForDepartmentLaList(DepartmentLaDto paginationDepartmentLa);
			
	/**
	 * 分页
	 * 
	 * @param paginationDepartmentLa
	 *            部门与语言对象
	 * 
	 * @return 部门与语言分页对象
	 */
	PaginationDto<Map<String, Object>> paginationDepartmentLaBy1ForMapList(DepartmentLaDto paginationDepartmentLa);
	/**
	 * 保存:部门关系
	 * 
	 * @param saveDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系对象
	 */
	DepartmentReDto saveDepartmentReByIdOrCodeForDepartmentRe(DepartmentReDto saveDepartmentRe);

	/**
	 * 保存:部门关系
	 * 
	 * @param saveDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系对象
	 */
	DepartmentReDto saveDepartmentReBy2ForDepartmentRe(DepartmentReDto saveDepartmentRe);

	/**
	 * 删除:部门关系
	 * 
	 * @param deleteDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 影响行数
	 */
	int deleteDepartmentReBy1(DepartmentReDto deleteDepartmentRe);

	/**
	 * 删除:部门关系
	 * 
	 * @param deleteDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 影响行数
	 */
	int deleteDepartmentReByIds(DepartmentReDto deleteDepartmentRe);

	/**
	 * 设置:部门关系
	 * 
	 * @param setDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 影响行数
	 */
	int setDepartmentReBy1(DepartmentReDto setDepartmentRe);

	/**
	 * 设置:部门关系
	 * 
	 * @param setDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 影响行数
	 */
	int setDepartmentReBy2(DepartmentReDto setDepartmentRe);

	/**
	 * 读取:部门关系
	 * 
	 * @param readDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系对象
	 */
	Integer readDepartmentReByCodeNqIdForInteger(DepartmentReDto readDepartmentRe);

	/**
	 * 读取:部门关系
	 * 
	 * @param readDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系对象
	 */
	Integer readDepartmentReBy2ForInteger(DepartmentReDto readDepartmentRe);

	/**
	 * 读取:部门关系
	 * 
	 * @param readListDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系对象集合
	 */
	List<Integer> readListDepartmentReBy1(DepartmentReDto readDepartmentRe);

	/**
	 * 读取:部门关系
	 * 
	 * @param readListDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系对象集合
	 */
	List<Integer> readListDepartmentReBy2(DepartmentReDto readDepartmentRe);

	/**
	 * 查询:部门关系
	 * 
	 * @param getDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系对象
	 */
	DepartmentReDto getDepartmentReBy1(DepartmentReDto getDepartmentRe);

	/**
	 * 查询:部门关系
	 * 
	 * @param getDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系对象
	 */
	DepartmentReDto getDepartmentReById(DepartmentReDto getDepartmentRe);

	/**
	 * 查询:部门关系
	 * 
	 * @param findDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系对象集合
	 */
	List<DepartmentReDto> findDepartmentReBy1(DepartmentReDto findDepartmentRe);

	/**
	 * 查询:部门关系
	 * 
	 * @param findDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系对象集合
	 */
	List<DepartmentReDto> findDepartmentReBy2(DepartmentReDto findDepartmentRe);
	
	/**
	 * 分页:部门关系
	 * 
	 * @param paginationDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系分页对象
	 */
	PaginationDto<DepartmentReDto> paginationDepartmentReBy1ForDepartmentReList(DepartmentReDto paginationDepartmentRe);
			
	/**
	 * 分页
	 * 
	 * @param paginationDepartmentRe
	 *            部门关系对象
	 * 
	 * @return 部门关系分页对象
	 */
	PaginationDto<Map<String, Object>> paginationDepartmentReBy1ForMapList(DepartmentReDto paginationDepartmentRe);
}